package com.sdonkey.score.service;

import java.util.List;
import java.util.Map;

import com.sdonkey.score.bean.UserAccountBean;
import com.sdonkey.score.bean.UserLoginBean;
import com.sdonkey.score.dto.UserAccountVo;

/**
 * 账户中心 service
 *
 * @author 赵超
 * @email 773134958@qq.com
 */
public interface IUserAccountService {

//---------------------------基本信息模块----------------------------------------

    /**
     * 方法描述：回显出用户的所有信息
     */
    UserLoginBean queryUserInformation(Long id);

    /**
     * 方法描述：更新改账户基本信息
     */
    int update_BasicInformation(UserLoginBean user);

    /**
     * 方法描述：更新详细信息
     */
    int update_Details(UserLoginBean user);

    /**
     * 方法描述：更新广告类别
     */
    int update_Ad_category(UserLoginBean user);

    /**
     * 方法描述：更新广告分类关键字
     */
    int update_Ad_Key(UserLoginBean user);

    /**
     * 方法描述：更新兴趣爱好
     */
    int update_User_Hobby(UserLoginBean user);

//---------------------------好友管理模块------------------------------------ 

    /**
     * 查询我所有的好友
     */
    Map<String, Object> friendListByID(String devid, int page);

    /**
     * 按条件查询我的好友
     *
     * @param devid     用户id
     * @param page      页码
     * @param condition 查询条件
     */
    Map<String, Object> findMyfriendByCondition(String devid, int page, String condition);

    /**
     * 按照首字母查询朋友
     *
     * @param devid 用户id
     * @param page  页码
     * @param first 首字母
     * @return</pre>
     */
    Map<String, Object> selectFriendsByFirstLetter(String devid, int page, String first);

    /**
     * 按id查询好友信息
     *
     * @param friendId 好友id
     * @return</pre>
     */
    Map<String, Object> selectFriendByFid(Integer friendId);

    /**
     * 删除好友
     *
     * @param devid    用户id
     * @param deleteid 待删除的好友id
     */
    String deletefriend(String devid, String deleteid);

    /**
     * 发送添加好友请求
     *
     * @param devid     用户id
     * @param adduserid 被添加好友ID
     * @param news      添加好友备注
     * @return</pre>
     */
    String addfriend(String devid, String adduserid, String news);

//---------------------------我的银行卡------------------------------------ 

    /**
     * 查询用户信息 获取用户持有的银行卡
     *
     * @param divId 用户id
     * @return
     */
    List<UserAccountVo> queryBankCardsById(String divId);

    /**
     * 查询一张银行卡详情     和用户积分信息
     *
     * @param accountId 账户id
     * @return</pre>
     */
    UserAccountVo queryBankCardOne(String divId, String accountId);

    /**
     * @param devId
     * @return</pre>
     */
    String getTel_Num_ById(String devId);

    /**
     * 修改平台预留电话
     */
    int update_Tel_Num(String id, String tel_num);

    /**
     * 小毛驴平台积分 提现  减少实际积分
     */
    int update_Balance(String id, String outBalance);

    /**
     * 解除已绑定银行卡
     *
     * @param id        用户id
     * @param accountId 账户id
     */
    int cancelBandingCard(String id, String accountId);

    /**
     * 添加新的银行卡
     * userAccountVo： id 和  accountId 新的银行卡信息都在里面
     */
    int addNewBankCard(UserAccountBean userAccount);

    /**
     * 更修女平台预留手机号码
     *
     * @param id      用户id
     * @param tel_num 手机号码
     * @return</pre>
     */
    int saveNewPhone(String id, String tel_num);

    /**
     * 保存新的邮箱
     *
     * @param id   用户id
     * @param mail 邮箱地址
     * @return
     */
    String saveNewMail(String id, String mail);

    /**
     * 验证邮箱是否已占用
     *
     * @param mail 邮箱地址
     * @return</pre>
     */
    boolean queryishaveUserByMail(String mail);

    /**
     * 修改登录密码
     *
     * @param devId  用户id
     * @param newPsw 支付密码
     * @return</pre>
     */
    String updatePsw(String devId, String newPsw);

    /**
     * 更新支付密码
     *
     * @param id        用户id
     * @param oldPayPsw 旧密码
     * @param newPayPsw 新密码
     * @return</pre>
     */
    //String updatePayPsw(String id, String oldPayPsw, String newPayPsw);

    /**
     * 重置（修改）支付密码
     *
     * @param id
     * @param newPayPsw
     * @return</pre>
     */
    String resetPayPsw(String id, String newPayPsw);

    /**
     * 同意 添加好友执行
     *
     * @param id        对方id（发起人id）
     * @param adduserid 登录人id（被添加人）
     * @return</pre>
     */
    String addFriendExecute(String id, String adduserid);

    /**
     * 拒绝 添加好友执行
     *
     * @param userid 对方id（发起人id）
     * @param id     登录人id（被添加人）
     * @return
     */
    String addFriendUnExecute(String userid, String id);

    /**
     * 验证（旧的）登录密码
     *
     * @param userId
     * @param oldPsw
     * @return
     */
    Integer ensureOldPsw(String userId, String oldPsw);

    /**
     * 验证（旧的）支付密码
     *
     * @param userId
     * @param oldPsw
     * @return
     */
    Integer ensureOldPayPsw(String userId, String oldPsw);

    /**
     * 验证是否已经设置登录密码
     *
     * @param userId
     * @return
     */
    boolean getPayPswStatus(String userId);

    /**
     * 校验是否绑定过此银行卡
     *
     * @param accountNum 银行卡号码
     * @param userId     用户id
     * @return
     */
    Boolean getCardStatus(String accountNum, String userId);

    /**
     * 获取用户剩余可输入支付密码次数
     *
     * @param userId 用户id
     * @param status 密码是否输入正确  true / false
     * @return
     */
    String getPayPswTimes(String userId, Boolean status);
}